//
//  UPaySDK.h
//  UPaySDK
//
//  Created by xu yao on 2021/3/4.
//

#import <Foundation/Foundation.h>
#import "NSMutableDictionary+CSDKInfo.h"
#import "USDKTypeDefine.h"
#import "USDKConnector.h"
#import "UPayReq.h"
#import "UGZRCpayModel.h"

NS_ASSUME_NONNULL_BEGIN
@interface UPaySDK : NSObject

/**
 *  初始化UPaySDK应用
 *
 *  @param activePlatforms          使用的支付平台集合，如:@[@(CSDKPlatformTypeWeChat), @(CSDKPlatformTypeAliPay)];
 *  @param importHandler           导入回调处理，当某个平台的功能需要依赖原平台提供的SDK支持时，需要在此方法中对原平台SDK进行导入操作。具体的导入方式可以参考ShareSDKConnector.framework中所提供的方法。微信支付和支付支付非必须，
 *  @param configurationHandler     配置回调处理，在此方法中根据设置的platformType来填充应用配置信息
 */
+ (void)registerActivePlatforms:(NSArray *)activePlatforms
                       onImport:(USDKImportHandler)importHandler
                onConfiguration:(USDKConfigurationHandler)configurationHandler;

/**
 * 调起收银页面
 * @param cashStageSessionId 订单信息ID
 */
+ (void)payInfoPageWithCashStageSessionId:(NSString *)stageSessionURL onPayResult:(USDKPayResultHandler)payResultHandle;

/**
 *  支付
 *  @param activePlatform 平台类型
 *  @param payFrameData 支付的参数 微信支付为UPayReq的对象，支付宝为后台返回的链接
 */
+ (void)payActivePlatform:(USDKPlatformType)activePlatform payFrameData:(id)payFrameData;

/**
 * 微信支付
 * @param payReq UPayReq的对象
 */
+ (void)wechatPay:(UPayReq *)payReq;

/**
 * 支付宝支付
 * @param payURL 支付宝签名后的ur
 */
+ (void)alipay:(NSString *)payURL;

/**
 * 黔农云支付
 */
+ (void)GZRCpay:(UGZRCpayModel *)orderInfo;

/**
 *  设置通信接口
 *  当实现了SceneDelegates时，需要在scene:openURLContexts:方法里面调用该方法
 *  - (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts{
 *      [UPaySDK handleOpenURL:URLContexts];
 *  }
 *  AppDelegate内需在application:openURL:options:调用该方法
 *  - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
 **           [UPaySDK handleOpenURL:url];
 *  }
 */
+ (void)handleOpenURL:(id)URLContexts;

/**
 * 关闭收银台
 */
+ (void)closecheckstand;
@end

NS_ASSUME_NONNULL_END
